//package com.tjetc;
//
//import lombok.AllArgsConstructor;
//import lombok.Data;
//
//public class _16Polymorphic {
//    public static void main(String[] args) {
//        /*
//            多态： 多么变态 多种形态
//            1.静态多态： 方法的重载 在编译时就确定到底什么
//            2.动态多态：在运行时才能知道具体的类型是什么
//
//            案例：Master类中有⼀个feed(喂⻝)⽅法，可以完成主⼈给动物喂⻝物的信息。
//
//            让一个主人喂🐶吃🦴
//            使用面向对象思想：
//                1.找一个主人： new 主人
//                2.找一个🐶：new Dog
//                3.找一个🦴：new 🦴
//
//             通过案例总结：
//             1.多态的使用必须有继承
//             2.父类的引用指向子类对象 （父类类型创建子类对象）
//             3.编译类型看左边，运行类型看右边（条件：只针对方法 属性没有这一说，属性只看编译类型）
//
//         */
//        // 使用类完成
//        // 面向对象为了 复用性！！！！
//        /*
//        Master master = new Master("👨");
//        Dog dog = new Dog("🐶");
//        Bone bone = new Bone("🦴");
//
//        master.feed(dog, bone);
//        */
//
//
//        // 使用 类 + 继承完成
//        /*
//        Master master = new Master("👨");
//        Dog dog = new Dog();
//        dog.name = "🐶";
//        Bone bone = new Bone();
//        bone.name = "🦴";
//        master.feed(dog, bone);
//
//        Cat cat = new Cat();
//        cat.name = "🐱";
//
//        master.feed(cat, bone);
//
//         */
//
//        // 使用 类 + 继承 + 多态完成
//        Master master = new Master("👨");
//        // 使用多态来创建 前提是有继承 对象的多态
//        // 编译类型：Animal 运行类型：Dog
//        Animal dog = new Dog();
//        dog.name = "🐶";
//        Food bone = new Bone();
//        bone.name = "🦴";
//        master.feed(dog, bone);
//
//        Animal cat = new Cat();
//        master.feed(cat, bone);
//    }
//}
//
//class Animal {
//    String name;
//}
//
//
//class Dog extends Animal{
//
//}
//
//class Cat extends Animal {}
//
//class Food {
//    String name;
//}
//
//
//
//class Bone extends Food{
//
//}
//
//@AllArgsConstructor
//class Master {
//    String name;
//
//    void feed(Animal animal, Food food) {
//        System.out.println("主人：" + name + "喂" + animal.name + "吃" + food.name);
//    }
//}
///*
//// 第二版
//class Animal {
//    String name;
//}
//
//
//class Dog extends Animal{
//
//}
//
//class Cat extends Animal {}
//
//class Food {
//    String name;
//}
//
//
//
//class Bone extends Food{
//
//}
//
//@AllArgsConstructor
//class Master {
//    String name;
//
//    void feed(Dog dog, Bone bone) {
//        System.out.println("主人：" + name + "喂" + dog.name + "吃" + bone.name);
//    }
//
//    void feed(Cat cat, Bone bone) {
//        System.out.println("主人：" + name + "喂" + cat.name + "吃" + bone.name);
//    }
//}
//*/
//
///*
//// 第一版
//@AllArgsConstructor
//class Dog {
//    String name;
//}
//
//@AllArgsConstructor
//class Bone {
//    String name;
//}
//
//@AllArgsConstructor
//class Master {
//    String name;
//
//    void feed(Dog dog, Bone bone) {
//        System.out.println("主人：" + name + "喂" + dog.name + "吃" + bone.name);
//    }
//}
// */
